Учебный курс: Подготовка на 1С:Специалист по платформе 1С:Предприятие 8.3

Решение задач по бизнес-процессам – тема № 5:
Как отобразить на одной форме и бизнес-процесс, и задачи по этому бизнес-процессу

В платформе «1С:Предприятие» бизнес-процесс и задача – это разные объекты метаданных, хоть они и связаны друг с другом. Поэтому может возникнуть потребность отображать на одной форме и бизнес-процесс, и задачи по этому бизнес-процессу. Решить эту задачу можно несколькими способами в зависимости от дополнительных требований заказчика. Но в любом случае на экзамене это нужно реализовать как можно оперативнее, поскольку задача достаточно простая.

Аттестационная задача может быть сформулирована следующим образом:

На форме бизнес-процесса нужно вывести список задач, подчиненных текущему бизнес-процессу.

Далее рассмотрим два варианта решения задачи – с использованием динамического списка и с переходом к связанной информации из формы бизнес-процесса.

Как отобразить список задач при помощи динамического списка

Первым делом выясним, как связаны между собой объекты метаданных Задача и БизнесПроцесс. Для этого в конфигураторе обратимся к списку стандартных реквизитов для задачи. Это можно сделать из контекстного меню или из окна редактирования объекта конфигурации ЗадачиИсполнителям:

Стандартный реквизит «БизнесПроцесс» объекта метаданных Задача

Рисунок 1 – Стандартный реквизит «БизнесПроцесс» объекта метаданных Задача

В этом списке присутствует стандартный реквизит БизнесПроцесс. Именно при помощи этого реквизита можно получить бизнес-процесс, к которому относится конкретная задача.

Следовательно, чтобы решить поставленную задачу и получить список задач, подчиненных определенному бизнес-процессу, нужно отобрать данные по полю БизнесПроцесс. Затем полученные данные необходимо вывести на форму.

Для решения задачи воспользуемся динамическим списком, поскольку это специальный объект платформы, предназначенный для отображения списков большого объема. Динамический список считывает данные из базы не целиком, а отдельными порциями, которые необходимы для вывода информации на экран. Если пользователь прокручивает список на форме, из базы будет получена очередная порция данных. Это оптимально с точки зрения производительности.

Создадим реквизит формы бизнес-процесса СписокЗадач (тип – Динамический список):

Создание динамического списка

Рисунок 2 – Создание динамического списка

Получаемые данные необходимо отбирать по конкретному бизнес-процессу, поэтому в тексте запроса воспользуемся секцией ГДЕ. Чтобы текст запроса динамического списка можно было редактировать вручную, для свойства созданного реквизита Произвольный запрос установим галочку:

Свойство «ПроизвольныйЗапрос» реквизита «СписокЗадач»

Рисунок 3 – Свойство «ПроизвольныйЗапрос» реквизита «СписокЗадач»

При помощи конструктора запроса создадим следующий текст запроса динамического списка:

ВЫБРАТЬ ЗадачаЗадачиИсполнителям.Ссылка, ЗадачаЗадачиИсполнителям.Номер, ЗадачаЗадачиИсполнителям.Дата, ЗадачаЗадачиИсполнителям.БизнесПроцесс, ЗадачаЗадачиИсполнителям.ТочкаМаршрута, ЗадачаЗадачиИсполнителям.Наименование, ЗадачаЗадачиИсполнителям.Выполнена, ЗадачаЗадачиИсполнителям.Исполнитель, ЗадачаЗадачиИсполнителям.Подразделение, ЗадачаЗадачиИсполнителям.Должность ИЗ Задача.ЗадачиИсполнителям КАК ЗадачаЗадачиИсполнителям ГДЕ ЗадачаЗадачиИсполнителям.БизнесПроцесс = &БизнесПроцесс

Таким образом будут получены все задачи по текущему бизнес-процессу. Параметр БизнесПроцесс нужно установить в программном коде. Устанавливать его будем в обработчиках двух событий: ПриСозданииНаСервере и ПослеЗаписиНаСервере. Это связано с тем, что при открытии формы нового, еще не записанного в базу бизнес-процесса, его ссылка пустая. После записи ссылка будет уже заполнена, и следует обновить значение параметра динамического списка.

В обработчиках событий ПриСозданииНаСервере и ПослеЗаписиНаСервере будет использоваться один и тот же программный код. Чтобы дважды не писать одинаковый фрагмент кода, вынесем его в отдельную процедуру УстановитьТекущийБизнесПроцесс.

Сформированный программный код выглядит следующим образом:

&НаСервере Процедура УстановитьТекущийБизнесПроцесс() СписокЗадач.Параметры.УстановитьЗначениеПараметра("БизнесПроцесс", Объект.Ссылка); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьТекущийБизнесПроцесс(); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) УстановитьТекущийБизнесПроцесс(); КонецПроцедуры

Перенесем динамический список на форму и отобразим колонки списка.

Отображение списка на форме

Рисунок 4 – Отображение списка на форме

Откроем форму бизнес-процесса в пользовательском режиме:

Список задач текущего бизнес-процесса

Рисунок 5 – Список задач текущего бизнес-процесса

На форме отображаются задачи, подчиненные этому бизнес-процессу.

Как перейти к списку задач конкретного бизнес-процесса

Теперь рассмотрим второй вариант решения задачи – с использованием штатных механизмов платформы. Они позволяют добавить в панель навигации формы бизнес-процесса ссылку для перехода к задачам, подчиненным текущему бизнес-процессу.

Для этого в конструкторе управляемой формы бизнес-процесса перейдем на закладку Командный интерфейс и в разделе Перейти включим видимость для Задач исполнителям:

Включение видимости команды «Задачи исполнителям» в панели навигации

Рисунок 6 – Включение видимости команды «Задачи исполнителям» в панели навигации

После таких настроек в пользовательском режиме на форме бизнес-процесса в панели навигации отображается гиперссылка для перехода к задачам по текущему бизнес-процессу:

Переход к задачам из формы бизнес-процесса

Рисунок 7 – Переход к задачам из формы бизнес-процесса

Таким образом, без написания программного кода можно получить список задач для конкретного бизнес-процесса.

В зависимости от того, какое представление списка задач требуется, при решении данной задачи можно выбрать наиболее подходящий способ из рассмотренных выше.

Перейти к следующей теме:
“Как при выполнении задачи пользователем автоматически перерисовывать карту маршрута, размещенную на форме бизнес-процесса” (№ 6)

Комментарии закрыты